package com.woniuxy.house.service;

import com.woniuxy.house.entity.*;
import com.woniuxy.house.mapper.UserMapper;
import com.woniuxy.house.vo.AddSourceVo;
import com.woniuxy.house.vo.UserVo;

import java.util.List;

/**
 * 用户业务逻辑接口
 *
 * @author baobo
 * @date 2022-08-29-9:52
 */
public interface UserService {
	/**
	 * 用户注册
	 *
	 * @param user
	 */
	User regist(User user);

	/**
	 * 通过id得到用户信息
	 *
	 * @param id
	 * @return
	 */
	User getUsrById(Integer id);

	/**
	 * 通过用户id查询用户的房源列表
	 *
	 * @param
	 * @return
	 */
	PageBean<List<Source>> getUserSources(Integer userId, Integer page);

	/**
	 * 修改用户信息
	 *
	 * @param user
	 * @return
	 */
	User update(User user);

	/**
	 * 通过用户账号和电话查询是否正确
	 *
	 * @param account
	 * @param phone
	 * @return
	 */
	void checkUserWithPhone(String account, String phone);

	/**
	 * 根据账号和密码 来查用户是否存在
	 *
	 * @param user
	 */
	User getUser(User user);

	/**
	 * 重置用户密码
	 *
	 * @param user
	 * @return
	 */
	User resetPassword(User user);

	/**
	 * 获取用户预约房源
	 *
	 * @return
	 */
	PageBean<List<Booking>> getUserBookings(Integer userId, Integer p);

	/**
	 * 获取用户帖子
	 *
	 * @param userId
	 * @param p
	 * @return
	 */
	PageBean<List<Post>> getUserPosts(Integer userId, Integer p);

	/**
	 * 通过id获取房源
	 *
	 * @param id
	 * @return
	 */
	Source getSourceById(Integer id);

	/**
	 * 通过用户id和帖子
	 * id删除帖子
	 *
	 * @param userId
	 * @param id
	 */
	void deleteUserPost(Integer userId, Integer id);

	/**
	 * 通过用户和对方的id获取聊天记录
	 *
	 * @param userId
	 * @param otherId
	 * @return
	 */
	List<Message> getHistory(Integer userId, Integer otherId);

	/**
	 * 查询用户的聊天列表
	 *
	 * @return
	 */
	List<List<Message>> getMessageList(Integer userId);

	List<User> getAll();

	PageBean<User> getByPage(int page);

	PageBean<User> getByCondition(User user, int page);

	/**
	 * 更新用户的房源信息
	 *
	 * @param addSourceVo
	 * @param id
	 */
	void updateSourceOne(AddSourceVo addSourceVo, Integer id);

	/**
	 * 根据用户id和房源id删除房源
	 *
	 * @param uid
	 * @param id
	 */
	void deleteSourceOne(Integer uid, Integer id);

	/**
	 * 通过用户id和帖子id查询出帖子信息
	 *
	 * @param uid
	 * @param pid
	 * @return
	 */
	Post getPostOne(Integer uid, Integer pid);

	/**
	 * 更新用户求租帖子
	 *
	 * @param uid
	 * @param post
	 */
	void updatePostQiu(Integer uid, Post post);

	/**
	 * 删除预约
	 *
	 * @param uid
	 * @param id
	 */
	void deleteUserBooking(Integer uid, Integer id);

	/**
	 * 修改密码
	 *
	 * @param uid
	 * @param userVo
	 */
	void updateUserPassword(Integer uid, UserVo userVo);
}
